package org.szy.plugin.dev.service;

import com.mybatisflex.core.query.QueryWrapper;
import org.szy.core.common.param.CommonMoveParam;
import org.szy.core.common.param.CommonStatusParam;
import org.szy.core.common.service.BaseService;
import org.szy.plugin.dev.entity.DevArea;
import org.szy.plugin.dev.param.DevAreaQueryParam;
import org.szy.plugin.dev.pojo.DevAreaTree;

import java.util.List;

/**
 * 中国行政地区表Service接口
 *
 * @author wangbuhao
 * @since 2023-06-19 11:08:21
 **/
public interface DevAreaService extends BaseService<DevArea> {

    /**
     * 获取中国行政地区表查询Wrapper
     *
     * @author wangbuhao
     * @since 2023-06-19 11:08:21
     */
    QueryWrapper qwByQuery(DevAreaQueryParam param);

    /**
     * 获取系统区域列表
     *
     * @param param 查询参数
     * @return 系统区域列表
     */
    List<DevArea> list(DevAreaQueryParam param);


    /**
     * 添加系统区域
     *
     * @author wangbuhao
     * @since 2023/02/15 11:22
     */
    boolean add(DevArea entity);

    /**
     * 编辑系统区域
     *
     * @author wangbuhao
     * @since 2023/02/15 11:22
     */
    boolean edit(DevArea entity);

    /**
     * 删除系统区域
     *
     * @author wangbuhao
     * @since 2023/02/15 11:22
     */
    boolean deleteById(Long id);

    /**
     * 构建区域树形结构
     *
     * @param list 区域列表
     * @return 树形结构列表
     */
    List<DevAreaTree> buildTrees(List<DevArea> list);

    /**
     * 移动区域位置
     *
     * @param param 移动参数
     */
    boolean move(CommonMoveParam param);

    /**
     * 移动区域位置
     *
     * @param param 移动参数
     * @return 移动结果
     */
    boolean modifyStatus(CommonStatusParam param);

    DevArea getByCode(String adcode);
}
